package aspiration;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

/**
 * filtre sur les formats de fichiers
 *
 */
public class FormatFilter extends DownloaderDecorator {

	/**
	 * liste de formats
	 */
	private ArrayList<String> formats;
	
	/**
	 * constructeur
	 * @param _dl filedownloader d�cor�
	 */
	public FormatFilter(FileDownloader _dl) {
		super(_dl);
		formats = new ArrayList<String>();
	}
	
	/**
	 * ajout d'un format
	 * @param format format � ajouter
	 */
	public void addFormat(String format) {
		formats.add(format);
	}
	
	/**
	 * suppression d'un format
	 * @param format format � supprimer
	 */
	public void removeFormat(String format){
		for (String s: formats){
			if (s.compareTo(format)==0) {
				formats.remove(s);
				return;
			}
			
		}
	}

	/**
	 * test de l'autorisation d'un format
	 * @param format format � tester
	 * @return renvoie true si le format est interdit
	 */
	public boolean isForbidden(String format) {
		for (String s: formats){
			if (s.compareTo(format)==0) {
				return true;
			}
		}
		return false;
	}
	
	/**
	 * application du filtre de format avant l'appel � save() sur le donwloader d�cor�
	 */
	public void save() {
		String address = url.toString();
		String format = address.substring(address.lastIndexOf(".")+1, address.length());
		if (!isForbidden(format)){			
			downloader.save();	
		}else{
			System.out.println("Filtering "+address+ " (forbidden format detected)");
		}
	}
	
	/**
	 * modification de l'url du site web
	 */
	public void setUrl(String _url){
		try {
			url = new URL(_url);
			downloader.setUrl(_url);
		} catch (MalformedURLException e) {
			System.out.println("Malformed url : "+this.url);
		}
	}
	
	

}
